package com.bestcem.xm.member.mq.receiver;//package com.bestcem.xm.member.mq.receiver;
//
//import com.alibaba.fastjson.JSON;
//import com.bestcem.xm.common.message.SampleCopyMessage;
//import com.bestcem.xm.member.service.MemberSampleMqHandler;
//import com.bestcem.xm.ticket.mq.TicketMqConsumUtil;
//import com.bestcem.xm.txtanls.service.util.SampleUtil;
//import com.bestcem.xm.util.MsgPackFormatUtil;
//import com.rabbitmq.client.Channel;
//import lombok.extern.slf4j.Slf4j;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.amqp.core.Message;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.io.IOException;
//import java.util.Base64;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * copy sample
// *
// * @author jy.zhao
// * @version 1.0
// * @date 2021/11/23 20:24
// **/
//@Slf4j
//@Component("copySampleReceiver")
//public class CopySampleReceiver {
//    private static final Logger EMAIL_LOG = LoggerFactory.getLogger("EmailErrorLog");
//
//
//    @Resource
//    private SampleUtil sampleUtil;
//    @Resource
//    private MemberSampleMqHandler memberSampleMqHandler;
//
//    /**
//     * 工单消息处理器
//     */
//    @Resource
//    private TicketMqConsumUtil ticketMqConsumUtil;
//
//    /**
//     * @param message
//     * @param channel
//     * @throws IOException
//     */
//    @RabbitListener(queues = "#{copySampleQueue.name}", ackMode = "MANUAL")
//    public void receive(Message message, Channel channel) throws IOException {
//        long deliveryTag = message.getMessageProperties().getDeliveryTag();
//        try {
//            MsgPackFormatUtil.MqMessage mqMessage = MsgPackFormatUtil.mqDecode(message.getBody());
//            if (mqMessage == null) {
//                EMAIL_LOG.error("【联系人】copy sample消息解析失败: {}", Base64.getEncoder().encodeToString(message.getBody()));
//                channel.basicNack(deliveryTag, false, false);
//                return;
//            }
//            if (log.isInfoEnabled()) {
//                log.info("app消费mq消息收到消息:{}", JSON.toJSONString(mqMessage));
//            }
//
//            SampleCopyMessage copyMessage = MsgPackFormatUtil.mapToObj(mqMessage.getData(), SampleCopyMessage.class);
//            if (log.isInfoEnabled()) {
//                log.info("copy_sample txtnals begin:{}", copyMessage.getOrgDstId());
//            }
//            // 调用文本分析行业sample
//            try {
//                sampleUtil.copySample(copyMessage);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            if (log.isInfoEnabled()) {
//                log.info("copy_sample txtnals end");
//            }
//            Map<String, String> ticketIdMap = new HashMap<>();
//            try {
//                // 调用工单的行业sample
//                ticketIdMap = ticketMqConsumUtil.copySample(copyMessage);
//            } catch (Exception e) {
//                log.error("[ticket]:copySample 工单出现错误", e);
//            }
//            try {
//                // 调用联系人行业sample
//                memberSampleMqHandler.memberSampleCopy(copyMessage, ticketIdMap);
//            } catch (Exception e) {
//                log.error("[member]:copySample 联系人出现错误", e);
//            }
//            channel.basicAck(deliveryTag, false);
//        } catch (Exception e) {
//            EMAIL_LOG.error("【联系人】处理倍市得app的mq消息异常:{}",
//                    Base64.getEncoder().encodeToString(message.getBody()), e);
//            try {
//                channel.basicNack(deliveryTag, false, false);
//            } catch (Exception e2) {
//                EMAIL_LOG.error("【联系人】处理倍市得app的mq消息, nack mq消息异常: {}",
//                        Base64.getEncoder().encodeToString(message.getBody()), e2);
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        for (int i = 0; i < 20; i++) {
//            if (i == 2) {
//                try {
//                    int a = i / 2;
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//                System.out.println(i);
//            }
//
//        }
//    }
//}
